package com.example.project10;

import android.content.Intent;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import com.google.android.material.bottomnavigation.BottomNavigationView;
/**
 * MainActivity 是应用的主界面，作为"单Activity"架构中的宿主Activity。
 * 它的主要职责包括：
 * 1. 承载并管理Fragment（如 HomeFragment 和 MineFragment）。
 * 2. 初始化并持有供所有Fragment共享的 SharedViewModel 实例。
 * 3. 处理底部导航栏的切换逻辑。
 * 4. 监听并处理全局事件，例如"退出登录"。
 */
public class MainActivity extends AppCompatActivity {

    private SharedViewModel sharedViewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        // 1. 初始化 ViewModel
        sharedViewModel = new ViewModelProvider(this).get(SharedViewModel.class);

        // 2. 从登录页获取邮箱并设置到 ViewModel 中
        // 确保你的 LoginActivity 是这样传递数据的:
        // intent.putExtra("user_email", email);
        String emailFromIntent = getIntent().getStringExtra("user_email");
        if (emailFromIntent != null && sharedViewModel.getUserEmail().getValue() == null) {
            sharedViewModel.setUserEmail(emailFromIntent);
        }

        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnItemSelectedListener(navListener);

        // 3. 监听退出登录事件
        sharedViewModel.getLogoutEvent().observe(this, isLogout -> {
            if (isLogout != null && isLogout) {
                // 返回登录页
                Intent intent = new Intent(this, LoginActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);
                finish();
                sharedViewModel.onLogoutEventHandled(); // 重置事件状态
            }
        });


        // 4. 首次加载时显示 HomeFragment
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
        }
    }

    private final BottomNavigationView.OnItemSelectedListener navListener =
            item -> {
                Fragment selectedFragment = null;
                int itemId = item.getItemId();

                if (itemId == R.id.nav_home) {
                    selectedFragment = new HomeFragment();
                } else if (itemId == R.id.nav_users) {
                    selectedFragment = new UserListFragment();
                } else if (itemId == R.id.nav_mine) {
                    selectedFragment = new MineFragment();
                }

                if (selectedFragment != null) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.fragment_container, selectedFragment)
                            .commit();
                }
                return true;
            };
}